home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 34.zip
/
BS1 part 34
/
Weubblers handler.adf
/
Docs
/
support
/
Mfm-Routinen.Doc
< prev
next >
Wrap
Text File
|
1989-01-09
|
2KB
|
77 lines
MFM-Routinen
Name:
SMfmSetBuffer - Setze den Anfang des Mfm-Puffers und starte CRC
SMfmEncodeByte - Schreibe ein MFM-Byte
SMfmEncode - Schreibe einen Puffer von n MFM-Bytes
SMfmEncodeBytes - Schreibe n MFM-Bytes
SMfmEncodeSync - Schreibe 3 SYNC-Bytes und starte CRC
SMfmEncodeCrc - Schreibe die CRC-Pruefsumme
StandardMfmDecode - decodiere einen Puffer von MFM-Bytes
Syntax:
SMfmSetBuffer (buffer)
unsigned short * buffer;
SMfmEncodeByte (byte)
unsigned char byte;
SMfmEncode (buffer,n)
unsigned char * buffer; int n;
SMfmEncodeBytes (n,c1,c2,c3...)
int n; unsigned char c1,c2,c3,...;
SMfmEncode Sync()
SMfmEncodeCrc()
StandardMfmDecode(buf1,buf2,n)
unsigned short * buf1; unsigned char * buf2; int n;
Ergebnis:
Keins
Beschreibung:
Diese Routinen sind normalerweise fuer den Benutzer transparent,
sie werden von den entsprechenden Routinen zum Lesen und Schreiben
von PC-Routinen aufgerufen. Sie rechnen das auf PC-Disketten
benutzte MFM-Format in lesbares Format um (MfmDecode) oder
umgekehrt (MfmEncode). Ausserdem starten die Encode-Prozeduren
automatisch den CRC-Pruefsummengenerator, so dass Pruefsummen
direkt in den Track geschrieben werden koennen.
Die Encode-Prozeduren arbeiten mit einem Puffer, der einmal angegeben
wird und der dann immer als Ziel benutzt wird. Weitere Erklaerungen
am Beispiel.
Beispiel:
a) In den Puffer TrackBuffer sei gerade ein Track gelesen worden.
Hier ist die Prozedur um 20 Bytes in SektorBuffer zu dekodieren:
unsigned short * TrackBuffer;
unsigned char * SektorBuffer;
while (*TrackBuffer==0x4489) TrackBuffer++;
StandardMfmDecode(TrackBuffer,SektorBuffer,20);
b) Es sei zu kodieren: 1. 3 Syncbytes, 1 Byte 0xfe, 500 Bytes aus
dem Puffer buffer und die Bytes 1,2,3 und 4 sowie die CRC-Pruef-
summe nach TrackBuffer.
unsigned short * TrackBuffer;
unsigned char * buffer;
SMfmSetBuffer(TrackBuffer);
SMfmEncodeSync();
SMfmEncodeByte(0xfe);
SMfmEncode(buffer,500);
SMfmEncodeBytes(4,1,2,3,4);
SMfmEncodeCRC();
Bekannte Fehler:
Keine.